Processing simulcast data

ABSTRACT

A mobile device receives a radio simulcast of streaming data and content. The mobile device extracts metadata from the radio simulcast. The mobile device identifies a communication channel to a content provider by comparing components of the metadata with reference data. The mobile device presents a user interface for connecting to the content provider through the communication channel. The mobile device also records the metadata with a time stamp and provides a user interface for displaying the data and time of content received.

RELATED APPLICATIONS

This application is related to U.S. patent application Ser. No.12/467,206, for “CONTENT SELECTION BASED ON SIMULCAST DATA,” filed May15, 2009, which patent application is incorporated by reference hereinin its entirety

BACKGROUND

This disclosure relates to processing simulcast data.

In some radio broadcasting protocols, data can be transmittedsimultaneously (simulcast) with broadcast content. For example, RadioData System (“RDS”) is a simulcast protocol that allows data to betransmitted simultaneously with content in FM (Frequency Modulation)broadcast. RDS operates by adding data to a baseband signal that is usedto modulate a radio frequency carrier. In some implementations of RDSbroadcasting, the baseband signal has a number of components. Normalmodulated audio signal that includes a left plus right (L+R) componentis transmitted from 0 to 15 kHz (relative to the baseband). A stereodifference signal (L−R) component is transmitted on a 38 kHz subcarrier.RDS information (e.g., data) is transmitted on a 57 kHz subcarrier. Dataare modulated and transferred at 1187.5 bits per second. RDS data caninclude free-form text that, after demodulation, can be displayed on adisplay device.

SUMMARY

A mobile device receives a radio simulcast of streaming metadata andcontent. The mobile device extracts the metadata (e.g., data describingthe radio broadcast) from the simulcast. The mobile device identifies acommunication channel to a content provider (e.g., a radio stationmaking the radio broadcast) by comparing components of the metadata(e.g., a radio station call sign) with reference data (e.g., a storedradio station dictionary). The mobile device presents a user interfacefor connecting to the content provider through the communicationchannel. Upon a request, the mobile device opens the communicationchannel and connects the mobile device to the content provider.

The details of one or more implementations of processing simulcast onmobile devices are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of processingsimulcast on mobile devices will become apparent from the description,the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an overview of some exemplary implementations of processingsimulcast data on a mobile device.

FIGS. 2A-2D illustrate exemplary user interfaces in various exemplaryimplementations of processing simulcast data.

FIG. 3 illustrates an example system architecture of the example mobiledevice of FIGS. 1 and 2A-2C.

FIGS. 4A and 4B are flowcharts illustrating exemplary processes forprocessing simulcast data.

FIGS. 5A and 5B are flowcharts illustrating exemplary processes forrecommending radio stations based on content metadata extracted fromsimulcast data.

FIG. 6 is a flowchart illustrating an exemplary process for recommendingcontent based on content metadata extracted from simulcast data.

FIG. 7 is a block diagram illustrating an exemplary system forrecommending radio stations and content based on content metadataextracted from simulcast data.

FIG. 8 is a block diagram of an example network operating environmentfor a mobile device and a system for processing simulcast data.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION Overview of Processing Simulcast Data

FIG. 1 is an overview of some exemplary implementations of processingsimulcast data 106 on a mobile device 120. A simulcast is a simultaneousbroadcast of content and metadata. Some implementations of a radiosimulcast can be an RDS protocol or a Radio Broadcast Data System(“RBDS”) protocol. The RBDS is a U.S. version of the RDS, and is nearlyidentical to the RDS, except in a number of areas (e.g., numberassignments in program formats). In this specification, the terms “RDS”and “RBDS” are used interchangeably except when otherwise noted.

A radio station 102 can provide simulcast (e.g., RDS broadcast). In thisspecification, the term “radio station” refers to a system where content(e.g., audio content, visual content, and data) is transmitted from atransmitter as electromagnetic waves, to be received by an antenna on areceiving device. The term “radio broadcast” refers to any transmissionof content from a transmitter as electromagnetic waves. Thus, the term“radio broadcast” can include, for example, audio content broadcast,visual content (e.g., TV) broadcast, in digital or analog format, byland-based, mobile, or satellite radio stations. The simulcast from theradio station 102 can include main content (e.g., a music piece) 104 anda data stream 106 which can be modulated (e.g., converted from digitalinto analog form) and transmitted on a subcarrier (e.g., a separatesignal carried on a main transmission). The data stream 106 can containinformation that includes a program type (e.g., news, drama, rock music,etc.), a program service name (e.g., the name of the radio station), andfree-form information (e.g., radio text). The free-form information canbe displayed on a display screen of a RDS enabled radio. The free-forminformation can contain one or more information snippets (e.g., textsegments, compressed text, numeric values, etc.) that, when parsed andassembled, can indicate a title of the main content (e.g., a title of asong being played), a name of a performer of the main content (e.g., aname of an artist singing the song), etc.

A mobile device 120 that includes a radio frequency (“RF”) receiver 121and an RDS processor 122 can receive the main content 104 and the datastream 106. The RDS processor 122 can separate the subcarrier from themain content. The main content (e.g., a song) is sent to an audioprocessing unit 126 and is played on the mobile device 120. The RDSprocessor 122 can demodulate the subcarrier to extract informationsnippets 124 from the RDS broadcast. In RDS broadcast, condition ofsignals received can vary greatly. For example, when the mobile device120 is in a moving car, the signal received can be poor due tointerferences from various electronic components in the car as well asthe location of the car (e.g., in a tunnel). The RDS processor 122 canhave built-in error correction functions. However, the reliability ofthe built-in error correction mechanism can vary. Therefore, theextracted information snippets 124 can be in pieces, instead of anentirety, of the original broadcast data stream (e.g., “BruceSpringsteen” can appear in two segments as “Bruce Sp” and “ringsteen”).

The RDS processor 122 can send the information snippets 124 to a contentmetadata processor 128 for processing. The content metadata processor128 can analyze the information snippets 124 and extracts informationfrom the information snippets 124. The extracted information can bestored in a content metadata data structure. Content metadata describesa broadcast and the content of the broadcast. The content metadata datastructure can have multiple components (e.g., data fields) thatcorresponds to information fields contained in the RDS data. RDS datacan contain various information fields such as clock time, programidentification code, a program service name, a program type (e.g., PTY10, which stands for “pop music” in RDS and “country” in RBDS),free-form information (e.g., radio text), etc. The content metadatacomponents can each contain a corresponding RDS data field. The contentmetadata can also contain other components that describe the maincontent being broadcast (e.g., the name of the artist playing the song,the title of the song, etc.). The name, title, etc. can be extracted,for example, by analyzing the free-form information (e.g., radio text)field of the RDS data.

In some implementations, the content metadata processor 128 can identifycontact information on the radio station 102 from reference data storedin a radio station database 130. The radio station database 130 is adatabase that contains one or more phone numbers, Short Message Service(“SMS”) identifications, email addresses, Uniform Resource Locator(“URL”) links, and other contact information which can be organizedbased on the call sign (e.g., a unique identification of a radiostation) or program identification code of each radio station. The radiostation database 130 can reside on a remote server (e.g., a server at amobile service provider) to which the mobile device can be connectedthrough a communications network. Alternatively, the radio stationdatabase 130 can also reside on the mobile device 120 (e.g., after beingdownloaded from or synchronized by the remote server).

After contact information of the radio station 102 is identified, a userinterface can be displayed on a user interface 132 (e.g., atouch-sensitive user interface) of the mobile device 120. On exampleuser interface 132, a call sign (e.g., “KIOE”), or alternatively a radiostation name (e.g., “K103”) and a radio frequency (e.g., “FM 103.5”) ofthe radio station 102 are displayed. Also displayed is information aboutthe main content being played on the mobile device 120 (e.g., a name ofa performer “Bruce Springsteen,” a title of the song being played “TenthAvenue Freeze-Out,” etc.), and user interface 134 and 136 for openingcommunication channels to the radio station 102. A user of the mobiledevice 120 can tap or otherwise touch the user interface 134 to call theradio station 102. The user can also tap the user interface 136 to openup a messaging interface so that the user can send a text message to theradio station 102. Other communication channels can include emails tothe radio station 102 or an interactive Web page of the radio station102.

The mobile device 120 can display the user interface 134 and 136 whileplaying the main content. A user can quickly access a communicationchannel and call, send text message to, or send email to the radiostation 102 for purposes of entering a contest (e.g., “the first 25caller to the station gets a prize”), voting on a song or a performer,or reporting a traffic situation (e.g., to a traffic reporting radiostation). The user can access more details to the communication channelsby, for example, tapping or otherwise touching a detailed informationicon 138 or 140. Tapping or otherwise touching a detailed informationicon 138 or 140 can cause the mobile device 120 to display, for example,the actual phone number, SMS ID, or email address of the radio station102, and/or options to add the phone number, SMS ID, or email address toa contact list or address book.

Various Implementations

FIGS. 2A-2D illustrate exemplary user interfaces in various exemplaryimplementations of processing simulcast data. FIG. 2A illustrates anexemplary user interface 210 where information that is relevant tobroadcast content is displayed on a mobile device 120. In FIG. 2A, themobile device 120 is playing broadcast content (e.g., a song “TenthAvenue Freeze-Out” by Bruce Springsteen). A simulcast data stream (e.g.,RDS data) is received by the mobile device 120. The mobile deviceextracts information snippets 124 from the data stream. The mobiledevice 120 can perform one or more searches using the informationsnippets 124. The information snippets 124 can be used as search termsin one or more search queries. The search queries can be sent to asearch engine on a network.

The search engine on the network can retrieve search results (e.g.,groups of relevant sources) that are related to the information snippets124. For example, the search engine can retrieve YouTube movie clips byor about an artist identified in the information snippets 124 (e.g.,movies by or about Bruce Springsteen). The search engine can alsoretrieve Web sites and book titles. The retrieved search results can bedisplayed in groups (e.g., “Watch on YouTube,” “Web Sites,” or “Books atAmazon.com”) in the user interface 210. Each search result in the userinterface 210 can be actionable. For example, a user can tap on a searchresult (e.g., a link to “The Wrestler” movie clip on YouTube) on atouch-sensitive display screen and watch the YouTube video clip in aviewer application or browse a Web page in a Web browser that iscompatible with the mobile device 120 (e.g., Safari by Apple Inc.).

In some implementations, the data stream 106 and the informationsnippets 124 can contain advertising information. For example, in theradio text section of RDS data, a radio station can send names, phonenumbers, and links to advertisers. On a conventional RDS receiver, theadvertising information can be displayed as a static or scrolling textstring. On mobile device 120, the advertiser information can be blendedinto the grouped search results and made interactive. For example, radiostation 102 can broadcast Bruce Springsteen's song “Tenth AvenueFreeze-Out” with an advertisement from “ticketsnow.com” in the radiotext section of associated RDS data. The text of the advertisement is“Bruce Springsteen Tickets at ticketsnow.com.” The mobile device 120 canidentify the string “ticketsnow.com” as an actionable link. Therefore,the mobile device 120 can display the text “Bruce Springsteen Tickets atticketsnow.com” on the user interface 210, together with other web pagesunder a section “Web Sites.”

FIG. 2B illustrates an exemplary user interface 220 where a listeninghistory is displayed. When the mobile device 120 plays broadcast content104, the mobile device can receive a simulcast data stream 106 (e.g.,RDS data). The data stream can contain an information field for clocktime. The clock time information field in RDS data can be used tosynchronize a clock (e.g., an internal clock of the mobile device 120).The mobile device 120 can extract the clock time information and includethe extracted information in a record as a timestamp indicating that auser of the mobile device 120 has played the content 104 at the recordedtime. The metadata of the content played, together with the timestamp,can be recorded as listening history on a storage device that isinternal to the mobile device 120 or on a server to which the mobiledevice is connected through a communications network. The listeninghistory can be displayed on a user interface 220 upon request by a useror application.

In some implementations, the metadata of the content 104 are recordedwith a timestamp when the content 104 has played on the mobile device120 for a sufficiently long period of time (e.g., one minute). Theperiod of time can be used as a threshold to filter out radio stationsand contents that the user has merely browsed through (e.g., listens tofor a few seconds before tuning to another radio station) instead ofactually listened to.

In some implementations, titles of the content and names of artistsplaying the content are displayed in the listing history on the userinterface 220. Radio station call signs, names, and frequencies can alsobe displayed in the list. A user can tap a call sign, a name, or afrequency to tune the mobile device 120 to the radio station. A user cantap on detailed information buttons 222 and 224 on a touch-sensitivedisplay screen to view details of the content played. The details caninclude information retrieved from the information snippets of the datastream (e.g., lyric writer, music composer, etc.). The details can alsoinclude related information as described above with respect to FIG. 2A.

FIG. 2C illustrates an exemplary user interface 230 where purchasingrecommendations are displayed on the mobile device. For convenience, theexemplary user interface 230 will be described with respect to a serverthat implements techniques for processing simulcast data andrecommending content for purchase.

In some implementations, a mobile device 120 is playing broadcastcontent (e.g., song “Tenth Avenue Freeze-Out” performed by BruceSpringsteen). A simulcast data stream (e.g., RDS data) is received bythe mobile device 120. The mobile device 120 extracts informationsnippets 124 from the data stream. The mobile device 120 sends theinformation snippets 124 to the server. The server extracts contentmetadata from the information snippets 124. The extracted contentmetadata can include information on the broadcast content such a titleof the broadcast content, a performer, a composer, a lyric writer, etc.The server can use the information to locate matching content (e.g.,matching songs) stored in a content repository 744, as described inreference to FIG. 7.

A content provider can maintain the content repository 744 for a largeamount of audio work (e.g., music pieces), video work (e.g., movies), orother work (e.g., books, recipes, games and other digital content orsoftware applications). The content repository 744 can be hosted on oneor more computers of the server or on one or more content providersaccessible through a communications network. The content repository 744can have various indices that can be used to match various components inthe content metadata. The server can display matching content (e.g., asong that has the same title as the one currently playing on the mobiledevice 120, or a song played by the same artist) as well as the purchaseprices of the songs on the user interface 230 of the mobile device 120.A user can tap the matching content 232 or 234 (e.g., a name of a song,or a purchase price of the song) on a touch-sensitive display device topurchase and download the content.

FIG. 2D illustrates an exemplary user interface 230 where radio stationrecommendations are displayed on a mobile device 120. For convenience,the exemplary interface 230 will be described with respect to a serverthat implements techniques for processing simulcast data andrecommending radio stations.

In some implementations, the mobile device 120 is playing broadcastcontent (e.g., a song “Tenth Avenue Freeze-Out” performed by BruceSpringsteen). A simulcast data stream (e.g., RDS data) is received bythe mobile device 120. The mobile device 120 extracts informationsnippets 124 from the data stream. The mobile device 120 sends theinformation snippets 124 to the server. The server extracts contentmetadata from the information snippets 124. The extracted contentmetadata can include an identification of the radio station that ismaking the broadcast (e.g., a program service name and frequency of theradio station the mobile device is tuned to) and information on thebroadcast content (e.g., a title of the broadcast content, a performer,a composer, a lyric writer, etc.) The server can use the information toidentify one or more radio stations that are broadcasting content thatis similar to the content playing on the mobile device 120 and recommendthose radio stations in a user interface 240 on the mobile device 120.

In some implementations, the server maintains a radio station repository740 that contains radio stations' call signs, frequencies, and genres. Agenre of a radio station can be a music category (e.g., “country”), or ascoring system that is based on, for example, performers or composerswhose work is most-played on the radio station, music categories ofsongs that are most played on the radio station, etc. The server canmatch genres of radio stations in the radio station repository 740 withthe genre of the current radio station into which the mobile device 120is tuned. The server can select one or more best-matching radio stations(e.g., whose genres are the same as or similar to the current radiostation) and send information (e.g., call sign, frequency) of theselected radio stations as recommendations to the mobile device 120. Themobile device can display the received recommendations on a userinterface 240. A user can tap or otherwise touch an area 242 or 244 thatcontains the station name on a touch-sensitive display device tointerrupt a current reception and tune into a recommended radio station(e.g., KPIY at FM 89.5 MHz). The user can interrupt a current receptionand tune into a recommended radio station for a variety of reasons. Forexample, the user can change stations when the user has traveled outsideof a strong reception range of the current station.

A user can access details of a recommended radio station by tapping ortouching a detailed information button 246 or 248. Tapping or touching adetailed information button 246 or 248 can cause the user interface 240to switch to a detailed display screen that includes, for example,contact information of the recommended station, a title of currentlyplaying content at the recommended station, signal strength, and avirtual dial or virtual bar that mimics an actual tuning control on aradio. The user can turn the dial or move the bar by moving one or morefingers across the display screen to access broadcast from the recommendstation or another station.

In some implementations, the server can recommend a radio station notonly based on the genre of the radio station, but also by the currentlyplaying content on the radio station. The station that plays contentthat most closely matches the content to which the user is listening isrecommended. For example, the user is listening to “Tenth AvenueFreeze-Out” by Bruce Springsteen on radio station KIOI at FM 101.3.Another station KPIY is playing “The Promised Land” by Indy. The songsare performed by the same artist (Springsteen). The system therefore canrecommend station KPIY on a display area 242 on the user interface 240of mobile device 120, even when station KPIY is not in the same genre ofKIOI.

Exemplary Mobile Device Architecture

FIG. 3 illustrates an example system architecture 300 of the examplemobile device 120 of FIGS. 1 and 2A-2D. The mobile device 120 caninclude a memory interface 302, one or more data processors, imageprocessors and/or central processing units 304, and a peripheralsinterface 306. The memory interface 302, the one or more processors 304and/or the peripherals interface 306 can be separate components or canbe integrated in one or more integrated circuits. The various componentsin the mobile device 120 can be coupled by one or more communicationbuses or signal lines.

Sensors, devices and subsystems can be coupled to the peripheralsinterface 306 to facilitate multiple functionalities. For example, amotion sensor 310, a light sensor 312, and a proximity sensor 314 can becoupled to the peripherals interface 306 to facilitate the orientation,lighting and proximity functions. Other sensors 316 can also beconnected to the peripherals interface 306, such as a temperaturesensor, a biometric sensor, or other sensing device, to facilitaterelated functionalities.

In some implementations, the mobile device 120 can receive positioninginformation from a positioning system 318. The positioning system 318,in various implementations, can be built into the mobile device 120, orcan be coupled to the mobile device 120 (e.g., using a wired connectionor a wireless connection). In some implementations, the positioningsystem 318 can include a GPS receiver and a positioning engine operableto derive positioning information from received GPS satellite signals.In other implementations, the positioning system 318 can include acompass and an accelerometer, as well as a positioning engine operableto derive positioning information based on dead reckoning techniques. Instill further implementations, the positioning system 318 can usewireless signals (e.g., cellular signals, IEEE 802.11 signals, etc) todetermine location information associated with the mobile device, suchas those provided by Skyhook Wireless, Inc. of Boston, Mass. Hybridpositioning systems using a combination of satellite and televisionsignals, such as those provided by Rosum Corporation of Mountain View,Calif., can also be used. Other positioning systems are possible.

In some example models of mobile device 120, a camera subsystem 320 andan optical sensor 322, e.g., a charged coupled device (CCD) or acomplementary metal-oxide semiconductor (CMOS) optical sensor, can beutilized to facilitate camera functions, such as recording photographsand video clips. In some other example models of mobile device 120 thatdo not have camera capability, camera subsystem 320 and an opticalsensor 322 can be absent.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 324, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 324 can depend on the communications network(s)over which the mobile device 120 is intended to operate. For example,mobile device 120 can include communication subsystems 324 designed tooperate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi orWiMax network, and a Bluetooth™ network. In particular, the wirelesscommunication subsystems 324 may include hosting protocols such that thedevice 120 can be configured as a base station for other wirelessdevices.

Broadcast reception functions can be facilitated through one or more RFreceivers 121. An RF receiver can receive, for example, AM/FM broadcastor satellite broadcast (e.g., XM® or Sirius® radio broadcast). An RFreceiver can also be a TV tuner. In some implementations, an RF receiver121 is built into the communication subsystems 324. In otherimplementations, an RF receiver 121 is an independent subsystem coupledto the mobile device 120 (e.g., using a wired connection or a wirelessconnection). The RF receiver 121 can be capable for receivingsimulcasts. In some implementations, the RF receiver 121 can include anRDS processor 122, which can process broadcast content (which can berelayed to the audio subsystem 326) and simulcast data (e.g., RDS data),which can be relayed to a content metadata processor 128. In someimplementations, the RF receiver 121 can be digitally tuned to receivebroadcasts at various frequencies. In some implementations, the RFreceiver 121 can have a scanning function that tunes up or down andpauses at a next frequency where broadcast content is available.

The I/O subsystem 340 can include a touch screen controller 342 and/orother input controller(s) 344. The touch-screen controller 342 can becoupled to a touch screen 346. The touch screen 346 and touch screencontroller 342 can, for example, detect contact and movement or breakthereof using any of a plurality of touch sensitivity technologies,including but not limited to capacitive, resistive, infrared, andsurface acoustic wave technologies, as well as other proximity sensorarrays or other elements for determining one or more points of contactwith the touch screen 346.

The other input controller(s) 344 can be coupled to other input/controldevices 348, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of the speaker 328 and/or the microphone 330.

In some implementations, a pressing of the button for a first durationmay disengage a lock of the touch screen 346; and a pressing of thebutton for a second duration that is longer than the first duration mayturn power to the mobile device 120 on or off. The user may be able tocustomize a functionality of one or more of the buttons. The touchscreen 346 can also be used, for example, to implement virtual or softbuttons and/or a keyboard.

In some implementations, the mobile device 120 can present recordedaudio and/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the mobile device 120 can include the functionality ofan MP3 player, such as an iPod™. The mobile device 120 can, therefore,include a 30-pin connector that is compatible with the iPod. Otherinput/output and control devices can also be used.

The memory interface 302 can be coupled to memory 350. The memory 350can include high-speed random access memory and/or non-volatile memory,such as one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory. The memory 350 can store anoperating system 352, such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS,or an embedded operating system such as VxWorks. The operating system352 may include instructions for handling basic system services and forperforming hardware dependent tasks. In some implementations, theoperating system 352 can include a kernel (e.g., a UNIX kernel or an XNUkernel).

Memory 350 can also store communication instructions 354 to facilitatecommunicating with one or more additional devices, one or more computersand/or one or more servers. The memory 350 may include graphical userinterface instructions 356 to facilitate graphic user interfaceprocessing; sensor processing instructions 358 to facilitatesensor-related processing and functions; electronic messaginginstructions 362 to facilitate electronic-messaging related processesand functions; web browsing instructions 364 to facilitate webbrowsing-related processes and functions; media processing instructions366 to facilitate media processing-related processes and functions;GPS/Navigation instructions 368 to facilitate GPS and navigation-relatedprocesses and instructions; and/or other software instructions 372 tofacilitate other processes and functions.

Memory 350 can also include a preferences engine 374. The preferencesengine 374 can be operable to receive user preferences as to the sortsof content the user is interested. In some implementations, thepreferences can be used to filter the sorts of information that is sentto the mobile device 100. For example, the user might indicate apreference for local music. Thus, when local music is available themobile device 100 can retrieve available local music. In anotherexample, the user might indicate a preference not to receive video,route or image content when in a specified area (e.g., hometown,familiar city, etc.), but to receive route and image content whenoutside of their specified area. These preferences can be communicatedto a media service, and can be used by the media service to providerelevant media content based on location and/or preferences.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures or modules. The memory 350 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device 100 may be implemented in hardware and/orin software, including in one or more signal processing and/orapplication specific integrated circuits.

Communicating to a Radio Station

FIGS. 4A and 4B are flowcharts illustrating exemplary processes forprocessing simulcast data. FIG. 4A is a flowchart illustrating anexemplary process for using simulcast data to open a communicationchannel to a radio station. In a step 402, a simulcast is received on amobile device 120. The mobile device 120 can be, for example, a handheldcomputer, a personal digital assistant (PDA), a cellular telephone, anetwork appliance, a camera, a smart phone, an enhanced general packetradio service (EGPRS) mobile phone, a network base station, a mediaplayer, a navigation device, an email device, a game console, or acombination of any two or more of these data processing devices and/orother data processing devices. The mobile device 120 can wirelesslyconnect with an external or unsecured network. In some other examples,the mobile device 120 can include a laptop that includes an inputdevice, such as a keypad, touch screen, one or more scroll wheels, oneor more buttons or other device that can accept information, and anoutput device that conveys information, including digital data, visualinformation, and audio information.

The mobile device 120 can include an RF receiver 121 that can be tunedto receive broadcast content in example frequencies that include MediumFrequency (“MF,” e.g., 530 kHz to 1,650 kHz AM radio), High Frequency(“HF,” e.g., some shortwave radio), Very High Frequency (“VHF,” e.g.,88-108 MHz FM radio, and some TV channels), Ultra High Frequency (“UHF,”e.g., some TV channels), and S Band radio frequencies (e.g., XM® orSirius® satellite radio channels).

A multicast of data stream can accompany the broadcast content (e.g.,under RDS protocol). The RF receiver 121 in the mobile device 120 caninclude, or be coupled with, an RDS processor 122 that can extractinformation snippets 124 from the data steam 106 that accompanies thebroadcast content 104. The data stream 106 can include modulatedinformation on alternative frequencies (“AF”), clock time (“CT”),program service (“PS”), program type (“PTY”), radio text (“RT”), andother information. Some information in the data stream 106 can besegments of text strings. For example, in RDS transmission, the PS fieldpermits a radio station to transmit an eight-character text string. TheRT field permits a radio station to transmit a 64-character free-formtext string. Due to various qualities of the transmission and reception(e.g., due to weather condition, motion of the mobile device 120,location of the mobile device 120, etc.), the mobile device can receiveone or more information snippets 124 (e.g., segments of eight to tencharacters, “Bruce Sp” and “ringsteen”).

In a next step 404, the mobile device 120 can extract content metadatafrom the information snippets 124 by parsing the information snippets124 while playing content 104 of the radio broadcast. Extracting contentmetadata can include identifying from the information snippets 124 aprogram type, a title of the content being broadcast, a name of aperformer of the content, a composer of the content, and an identifieridentifying the broadcasting radio station. Extracting content metadatacan include identifying meaningful information from the informationsnippets 124 of the free-form text (e.g., determining that “Bruce Sp”and “ringsteen” actually mean artist “Bruce Springsteen”).

In some implementations, a content metadata processor 128 buffers theinformation snippets. One reason for buffering the information snippetsis data transmission speed and quality. RDS data are transmitted at arate of 1187.5 bits per second. The data contain information (in 16-bitsegments) and check words (in 10-bit segments). Therefore, the mobiledevice can receive information snippets (e.g., text strings) at amaximum rate of less than 100 characters per second. Because theinformation snippets received can contain errors, the content metadataprocessor 128 can decide to parse the information snippets (e.g., textstrings of the RT data field) after the entire text field (e.g., 64characters) is received. Therefore, the content metadata processor 128stores (e.g., buffers) the partial text strings until the RT data fieldis completely received.

In some implementations, a content metadata processor 128 performsreal-time (on-the-fly) text analysis as soon as an entire data field(e.g., an RT data field or a PS data field) is received. The data fieldsin some RDS transmissions (e.g., in RBDS) can be dynamic. For example, aradio station can transmit a PS field in an RDS transmission thatincludes the call sign letters of the radio station (e.g., “KIOI”),which can be inaccurate upon reception (e.g., into “KI#I”). The radiostation can transmit other characters in the same PS data field insubsequent transmissions (e.g., “get up,” “and,” and “dance!”). When thecontent metadata processor 128 receives these strings segments, thecontent metadata processor 128 can analyze the segments and determinewhether the string in the PS field is a content metadata component. Theanalysis can include looking up the text in the PS data field in a radiostation database 130. If the text in the PS field does not correspond toa call sign of a station in the radio station database 130, the contentmetadata processor 128 can discard the text and wait for a nexttransmission of the PS field.

In some implementations, the content metadata processor 128 can performa search to determine the call sign of a radio station if the text in aPS data field contains sufficient information that can be used in asearch query submitted to a search engine to identify the radio station.In some implementations, the content metadata processor 128 performs asearch when the text in the PS data field starts with a letter W or K(which are the beginning letters of call signs in the United States) andcontain four or six letters in total (which makes it likely that thetext is a call sign, which often contains four to six letters). Thecontent metadata processor 128 therefore can perform a search based onthe letter received, the frequency that the mobile device 120 iscurrently tuned to, and/or a location of the mobile device (which can bedetermined by the positioning system 318). For example, when a contentmetadata processor 128 receives text string “KI#I” and a radio receiverin the mobile device 120 is tuned to FM 101.3, the content metadataprocessor 128 can perform a search using query term “KI?I” (where the“?” is a wildcard by using an Internet search engine (e.g.,http://www.radio-locator.com), and determine that the “KI#I” refers to“KIOI” at FM 101.3 in San Francisco Bay Area.

In some implementations, the content metadata can be stored on a storagedevice in association with a date and time stamp. The date and timestamp can be used to track a history of the radio stations to which auser has tuned, categories of content (e.g., genre of music) to whichthe user has listened, and for how long. The stored content metadata canbe used to identify the user's interests, which can be used by theserver to make content recommendations to the user. The stored contentmetadata can also be presented to the user (e.g., on user interface 220)such that the user can purchase content that has been broadcast from theradio station 102.

In next step 406, the mobile device 120 can present a first userinterface 132 for accessing a communication channel connecting themobile device 120 to a content supplier. The first user interface 132can include a telephone interface 134 when the mobile device 120 hastelephone capabilities, a text-messaging interface 136 when the mobiledevice 120 has messaging capabilities (e.g., SMS service), or otherinterfaces (e.g., email, URL link) for connecting to the contentsupplier. The content supplier can be the radio station 102 that ismaking the broadcast, or another source of content (e.g., a broadcastingcompany that controls the radio station, a recording studio, etc.). Thetelephone number, SMS ID, email address, or URL link can be identifiedfrom pre-stored information in a radio station database 130.

In some implementations, a telephone number, an SMS ID, an emailaddress, or a URL link can be identified from the information snippets124 received on the mobile device 120. The RT data field of an RDS datastream can contain various information, including telephone numbers andso on. In parsing the information snippets 124, the content metadataprocessor 128 can identify a telephone number (e.g., when a series ofnumbers is in an xxx-xxx-xxxx format), an email address (e.g., when aseries of alphanumeric digits is in an xxx xxx.com format), or a URL,etc. Such information can be broadcast by a radio station that solicitscalls (e.g., a traffic reporting radio station seeking user calls aboutlatest traffic conditions, or a music station providing quizzes andprizes).

In next step 408, the mobile device 120 can open the communicationchannel in response to a user request. If the user makes a request tocommunicate with the content supplier (e.g., by tapping on telephoneinterface 134 on a touch-sensitive display screen of the mobile device120), the mobile device dials a telephone number that is associated withthe content supplier. Similarly, a user can open a virtual keyboard tosend a text message, an email editor to edit an email message to thecontent supplier, or a Web page on the display device.

In next step 410, the mobile device 120 presents a second user interface220 for displaying the date and time that specific content is played.The user interface 220 can display a history of the radio stations towhich a user has tuned and content the user played. The user canconfigure how long (e.g., how many days) the history goes back. The usercan turn the history tracking off. The user can also configure themobile device 120 such that the user's listening history can be accessedby public. For example, the history can be uploaded to a server suchthat the server can recommend content to the user based on the history.The history can be shared with specific other users (e.g., by exportingthe history to a file and sending the history file to another user). Thehistory can also be made private.

In some implementations where a user's listening history is tracked, asystem can use the information to introduce various users to each otherin a social network based on similarities in listening histories. Forexample, the system can maintain a social network where a user can login with a user ID and password and view profiles of other users wholistened to the same broadcast at the same time for more than a fewminutes or times.

FIG. 4B is a flowchart illustrating an exemplary process for presentinga user interface on a mobile device 120 to access an advertiser. In astep 452, the mobile device 120 receives a simulcast of a data stream106 of a radio broadcast 104. The data stream can include informationassociated with one or more advertisers. In some implementations, theinformation associated with advertisers can be included in the RT fieldof RDS data.

In next step 454, the mobile device 120 can extract advertiserinformation from the data stream 106 while playing content 104 of theradio broadcast. A content metadata processor 128 parses the informationsnippets 124 extracted from the data stream 106. During the parsing, thecontent metadata processor 128 can encounter contact information thatcan include one or more telephone numbers, email addresses, or URLs. Thecontact information can be about the broadcasting radio station 102.Other contact information can be about advertisers. In someimplementations, the content metadata processor 128 ignores distinctionsbetween a content provider and an advertiser, and displays a mixture ofcontact information from advertisers, radio station, and otherinformation on a user interface (e.g., user interface 210).

In some implementations, the content metadata processor 128distinguishes an advertiser and a non-advertiser by performing a search.The search can be a query into a radio station database 130. If thecontact information (e.g., a phone number) appears in the radio stationdatabase 130, and especially when the contact information matches thatof the radio station 102 into which the mobile device is tuned, thecontent metadata processor 128 can presume that the contact informationrelates to a content provider. If the contact information (e.g., a phonenumber) does not appear in the radio station database 130, the contentmetadata processor 128 can presume that the contact information relatesto an advertiser. In some implementations, the search can be performedon a search engine on a server (e.g., an Internet search engine) todetermine whether a phone number, email address, or URL relates to acontent provider or an advertiser. In some implementations where acontent provider is an advertiser (e.g., a phone number appears in thecontent database 130, but is associated with a radio station other thanthe one to which the mobile device is tuned), the content metadataprocessor 128 can treat present the content information as contactinformation related to an advertiser.

In a next step 456, the mobile device 120 presents a browsable userinterface to access one or more advertisers in the advertiserinformation. In some implementations, advertisers are identified andcontact information on the advertisers is displayed separately. In someother implementations, the advertiser contact information is displayedmixed with other information related to the content being played on amobile device 120 on a user interface 210. The user interface isbrowsable when, for example, a user can scroll up and down (or left andright) a list of advertisers by a gesture by one or more fingers on atouch-sensitive display screen.

Recommending Radio Stations

FIGS. 5A and 5B are flowcharts illustrating exemplary processes 500 and550 for recommending radio stations based on content metadata extractedfrom simulcast data. FIG. 5A is a flowchart illustrating an exemplaryprocess 500 for recommending a radio station based on a genre identifiedin content metadata of content currently played on a mobile device 120.For convenience, the example process will be described with respect to aserver that implements techniques for processing simulcast data. In FIG.5A, the server can recommend a radio station to a user based on what theuser is listening to.

In step 502, the server receives information snippets 124 from a firstmobile device 120. The information snippets 124 are included in a datastream 106 of a radio simulcast received on the first mobile device 120.The simulcast is transmitted from a first radio station 102.

In next step 504, the server can identify content metadata andcomponents of the content metadata from the information snippets 124received from the first mobile device 120. In some implementations,components of content metadata can include a title of a song beingplayed, a name of a performer playing the song, etc. The informationsnippets 124 can include a complete title or a name or fragments of thetitle or the name (e.g., “Bruce Sp” and “ringsteen”). The server can usea search engine as an error correction mechanism to recreate the actualname of the artist from the fragments. In some implementations, theserver identifies components of content metadata by performing a searchfor each information snippet (e.g., search for text segment “Bruce Sp”and for text segment “ringsteen”), and cross-reference the searchresults (e.g., by identifying URLs that are included in both searchresult for “Bruce Sp” and search result for “ringsteen” to determinethat “Bruce Springsteen” is a component of content metadata). In someimplementations, the server performs a search by submitting to a searchengine a search query whose terms include a combination of two or moretext segments (e.g., “Bruce Sp ringsteen”). The server can identify anartist name that appears at or near the top of search results for thesearch query, and enters that name as a component of the metadata. Theserver can identify the term “Bruce Springsteen” as an artist name fromthe search results by comparing the search results with a contentrepository 744 that contains a collection of names of artists. Thecontent repository 744 will be described in further detail below withrespect to FIG. 7. In addition to the song title and artist name, othercomponents (e.g., program type, radio station name, etc.) can besimilarly identified.

In next step 506, the server can select a second radio station from aradio station repository 740. The selection can be based on whetherattributes (e.g., a genre) of the second radio station match at least aportion of the content metadata. In some implementations, the secondradio station is selected if the genre of the second radio stationmatches one or more components of the content metadata. A radio stationrepository 740 can store call signs (e.g., “KIOI”), names (e.g., “K101”which can differ from call signs), frequencies (e.g., “FM 101.3”),locations (e.g., “San Francisco”) and genres (e.g., “soft rock”). Theserver can select from the radio station repository 740 a radio stationwhose genre matches a component (e.g., program type) in the contentmetadata. In some implementations, the data stream 106 contains RDS datathat includes a program type definition (“PTY”) data field thatspecifies a program type of the currently broadcast content. Forexample, in RBDS, PTY code 8 can specify that the program type of thecurrently broadcast content that a user is playing on the mobile device120 is “soft rock.” The server can extract the PTY code from theinformation snippets 124 and designate “soft rock” as a program typecomponent in the content metadata. The server can identify a radiostation whose genre is a match for the program type component in thecontent metadata (e.g., “KIOI,” whose genre is “soft rock”) andrecommend the radio station to the user.

In some implementations, the radio station recommendation can be basedon a geographic location of the radio station and a geographic locationof the mobile device 120. The server can select a second radio stationthat is located in a geographic proximity of the mobile device 120 torecommend to the user. Selections based on geographic proximity canensure that the mobile device 120 is within a range of clear receptionof signals from the radio station recommended. The location of the radiostation can be stored in the radio station repository 740. The locationcan be determined by a postal code (e.g., ZIP code), an address, orgeographical coordinates of a latitude and a longitude. The geographiclocation of the mobile device 120 can be determined by a positioningsystem 318 (e.g., a Global Positioning System (GPS) receiver) that isbuilt-in or coupled with the mobile device 120. The server can acquirethe geographic location of the mobile device 120, for example, byrunning a polling program or by sending a request to the mobile device120 when the server needs the location information. For example, theradio station KIOI can be recommended to the user if the genre of KIOI(“soft rock”) matches the program type of the content the user islistening to, and if the user is in a location close enough to SanFrancisco such that the mobile device 120 can receive clear signals fromKIOI.

In next step 508, the server presents a reference to the selected secondradio station to the first mobile device as recommendations. The name orthe call sign of the selected second radio station, as well as thefrequency on which the second radio station broadcasts, can be sent tothe mobile device 120 as recommendations. The recommended radio stationsand frequencies can be displayed on a user interface 240.

FIG. 5B is a flowchart illustrating an exemplary process 550 forrecommending a second radio station to a mobile device 120 based oncontent being broadcast on the second radio station. In someimplementations, exemplary process 550 can correspond to a process forselecting a second radio station from a radio station repository 740,described above with respect to FIG. 5A. For convenience, the exampleprocess will be described with respect to a server that implementstechniques for processing simulcast data.

In step 552, the server determines a currently broadcast content item oneach radio station in a radio station repository 740. In someimplementations, the currently broadcast content item can be locatedfrom radio stations' Web pages. In some implementations, the system candetermine the currently broadcast content item for each station byreceiving information from a population of mobile devices (“second”mobile devices). For example, the mobile device 120 can be tuned to aradio station KIOE (FM 103.5). The server can extract content metadatafrom the information snippets 124 sent from mobile device 120 to theserver and determine what content (e.g., title of the song, name of theartist, etc.) is playing on radio station KIOE, and the category of thecontent (e.g., “soft rock”). Similarly, the server can determine what isbeing broadcast on various radio stations from information snippets sentto the server by other mobile devices. A large number of second mobiledevices sending information snippets to a server can be helpful indetermining what is playing on a large number of radio stations. Thecontent metadata of the various content can be stored in a currentlyplaying item database 742.

In step 554, the server identifies a specific currently broadcastcontent item that matches the content being played on the mobile device120. From a large number of content items being played on various radiostations sent to the server by a large number of mobile devices, theserver can select a limited number of content items. To select aspecific content item, the server can use a match score that can becalculated base on a number of matches between components of the contentmetadata of the currently playing content and the components of thecontent metadata of the specific content item in the currently playingitem database 742. For example, if song A and song B have the sameprogram type (e.g., soft rock), are played by the same artist, writtenby the same composer, in the same time period (e.g., within five yearsof each other), the system can identify song B as matching content forsong A, and song A matching content for song B.

In some implementations, the system limits the selection of matchingcontent to geographic areas of the radio stations. Instead of matchingall content from all radio stations in a radio station repository 740,the system can limit the matching of content to matching only contentfrom radio stations in a geographic proximity (e.g., radio stations inSan Francisco Bay Area) of the mobile device 120 and radio stationswhose signals can be received by the mobile device 120 (e.g., satellitebroadcast). Such limitations can reduce the number of content items thatthe system matches against each other, and improve efficiency of thesystem.

In some implementations, the system can further use album information toselect matching content. The system can consider song A and song Bmatching each other if song A and song B are included in one or morepublished albums together. The system can maintain a content repository744 that can include, for example, music pieces and albums that arebundled and published together by publishers. If two music pieces are inone album, the system can determine that the two pieces are related toeach other even if the two pieces do not share a performer, a composer,or a title. For example, an album for a movie soundtrack can includevarious music pieces from various otherwise unrelated artists. However,the system can consider the music pieces related based on the moviesoundtrack album and select the music pieces.

In step 556, the server can select the second radio station that isbroadcasting the specific currently broadcast content item. Selectingthe second radio station can include retrieving a radio station callsign and frequency from the content metadata that is associated with theselected content item. If the frequency is not included in the contentmetadata, the system can identify the frequency based on the call signfrom a radio station repository 740. The system can send the selectedradio station name, call sign, and frequency to the mobile device 120 asrecommendations.

Recommending Content

FIG. 6 is a flowchart illustrating an exemplary process for recommendingcontent based on content metadata extracted from simulcast data. Forconvenience, the example process will be described with respect to aserver that implements techniques for processing simulcast data andrecommending content.

In step 602, the server receives information snippets 124 from a mobiledevice 120. The information snippets 124 are included in a data stream106 of a radio simulcast received on the mobile device 120. Thesimulcast is transmitted from a radio station 102.

In step 606, the server can select one or more content items from acontent repository 744. Each selected content item has at least onefeature that matches at least a portion of the content metadata. Thecontent stored in the content repository 744 can be associated withvarious features of the content, for example, category (e.g., classical,jazz, talk), performer (e.g., Bruce Springsteen), composer, time period,etc. The features can have sub-features (e.g., a “rock” category canhave sub-categories “soft rock,” “classic rock,” etc.). The system canmaintain one or more indices on the features and sub-features. Given aparticular feature, the system can use the indices to identify from thecontent repository 744 one or more content items that have theparticular feature. The system can match the various components of thecontent metadata to the features in the index to identify content itemsthat features at least one component of the content metadata. The numberof components that are matched can be used to calculate a match scorethat measures a degree of match.

In some implementations, the system can match a component in the contentmetadata to various features in the content repository 744. For example,the content metadata can include a name “Bruce Springsteen.” The systemcan match the name “Bruce Springsteen” to a performer, a composer, orboth a performer and a composer in the content repository 744. Contentthat is both composed and performed by Bruce Springsteen can have ahigher degree of match and receive a higher match score. Content thathas high match scores can be selected as recommendation candidates.

In some implementations, selecting content from content repository 744can further include filtering the recommendation candidates by thecontent that a user has already downloaded to a user library. A user candownload various content from the server to create a user library andstore the user library on the mobile device 120. If the user has alreadydownloaded a particular content item (e.g., song “Tenth AvenueFreeze-Out” by Bruce Springsteen), the system can refrain fromrecommending the content item because the user may not wish to downloador purchase a song that the user already owns.

In some implementations, to determine whether the user has alreadydownloaded a particular content item, the system can obtain a userlibrary catalog 746. The server can store a catalog 746 of the user'sdownloaded content. The server can synchronize the stored catalog 746periodically according to a predetermined time interval, synchronize thestored catalog 746 when the user downloads new content, or synchronizedthe stored catalog 746 upon request from the user or upon an event thattriggers a synchronization (e.g., when the user reboots the mobiledevice 120).

In step 608, the server presents references (e.g., links to an onlinemusic store) to the one or more selected content items asrecommendations on a user interface 230 on a display device of themobile device 120. The references displayed can be actionable (e.g., auser can click on input area 232 or 234 to purchase the recommendedcontent.

FIG. 7 is a block diagram illustrating an exemplary system forrecommending radio stations and content based on content metadataextracted from simulcast data. Example mobile devices 701 and 702 aremobile devices that are equipped with or can be coupled to an RFreceiver 121 that can receive radio broadcast and a simulcast datastream. In some implementations, mobile devices 701 and 702 cancorrespond to the mobile device 120 described above with respect toFIGS. 1 and 2A-2D. Mobile devices 701 and 702 can extract informationsnippets 124, for example, from RDS data in the radio broadcast, whileplaying content of the radio broadcast. Mobile devices 701 and 702 canidentify radio stations making the broadcast and provide user interfacesfor identifying and opening communication channels (e.g., a userinterface for a one-touch virtual phone dial pad) to the identifiedradio stations.

The mobile devices 701 and 702 can be connected to each other and to acontent metadata service 730 through a communications network 720. Thecontent metadata service 730 can be hosted on one or more computers,virtual machines, or mobile devices. The content metadata service 730can include one or more content metadata processors 732. In someimplementations, the information snippets 124 are sent from a mobiledevice 701 to the content metadata processors 732. The content metadataprocessor 732 extracts various components of the content metadata. Someexample components include but are not limited to: category of thecontent of the radio broadcast playing on the mobile device 701, titleof the content, artists playing the content, time period of the content,author or composer of the content, producers, directors and stars of thecontent if the content is a movie, etc.

A radio station repository 740 in the content metadata system 730 canstore information on radio stations. The information can include a radiostation's call sign, name genre, location, contact information (e.g.,one or more phone numbers, email addresses, etc.). In someimplementations, the radio station repository 740 can be synchronizedwith a radio station database 130 on a mobile device 701 or 702periodically, upon user request, or upon rebooting the mobile device 701or 702. In some implementations, the content metadata processor 732 canupdate the radio station repository 740. An update to the radio stationrepository 740 can occur, for example, when a mobile device receives anew phone number to a radio station.

A content metadata service 730 can include a currently playing itemdatabase 742. The currently playing item database 742 can be used invarious implementations for recommending radio stations broadcastingcontent similar to what a user is listening, for example, in process 550described above with respect to FIG. 5B. In some implementations, thecontent metadata processor 732 can update the currently playing itemdatabase 742. The content metadata processor 732 can receive informationsnippets 124 from numerous mobile devices, the information snippets 124extracted by one or more processors (e.g., RDS processors 122) fromsimulcast data streams of numerous radio broadcast from numerous radiostations. The broadcast content from each radio station can be recordedin the currently playing item database 742 and updated when the radiostation broadcasts new content.

A content metadata service 730 can include a recommendation module 734,which can recommend radio stations or content to various mobile devices701 and 702. A radio station selector 736 can select various radiostations to recommend to a particular mobile device 702 based on whichradio station mobile device 702 has tuned to and what content a user islistening to on mobile device 702.

A radio station selector 736 can be used to select radio stations forrecommendation to a user. Recommending radio stations can includeselecting radio stations from radio station repository 740 based on agenre of a radio station. Recommending radio stations can also includeidentifying currently playing content items from the current playingitem database 742 based on the content to which the user is listening.Example implementations of processes for recommending radio stations aredescribed above with respect to FIGS. 5A and 5B.

A content selector 738 can be used to select content for recommending toa user. The content selector 738 can select content from a contentrepository 744 based on a match between the content in the contentrepository 744 and the broadcast content to which the user is listeningon the mobile device 702. In some implementations, the content selector738 can use a user library catalog 746 to filter out content that is agood match but is already downloaded by the user into a user library.Example implementations of processes for recommending content to a userare described above with respect to FIG. 6.

The recommendation module 734 can send information on the radio stationsselected by the radio station selector 736 (e.g., radio station name,call sign, and frequency), or the content (e.g., an URL link to adownload site) selected by the content selector 738, to the mobiledevice 701 or 702 through communications network 720. The mobile device701 or 702 can display the information in various formats. Theinformation displayed in some example user interfaces is described abovein further detail with respect to FIGS. 2A-2D.

Network Operating Environment

FIG. 8 is a block diagram of an example network operating environment800 for a mobile device. The mobile device 120 of FIG. 1 can be mobiledevice 701 or 702 in the example network operating environment 800.Mobile devices 701 or 702 can communicate over one or more wired and/orwireless networks in data communication. For example, a wireless network812, e.g., a cellular network, can communicate with a wide area network(WAN) 720, such as the Internet, by use of a gateway 816. Likewise, anaccess point device 818, such as an 802.11g wireless access pointdevice, can provide communication access to the wide area network 720.In some implementations, both voice and data communications can beestablished over the wireless network 812 and the access point device818. For example, the mobile device 701 can place and receive phonecalls (e.g., using VoIP protocols), send and receive e-mail messages(e.g., using POP3 protocol), and retrieve electronic documents and/orstreams, such as web pages, photographs, and videos, over the wirelessnetwork 812, gateway 816, and wide area network 720 (e.g., using TCP/IPor UDP protocols). Likewise, the mobile device 702 can place and receivephone calls, send and receive e-mail messages, and retrieve electronicdocuments over the access point device 818 and the wide area network720. In some implementations, the mobile device 702 can be physicallyconnected to the access point device 818 using one or more cables andthe access point device 818 can be a personal computer. In thisconfiguration, the mobile device 702 can be referred to as a “tethered”device.

The mobile devices 701 and 702 can also establish communications byother means. For example, the wireless device 701 can communicate withother wireless devices, e.g., other wireless devices 701 and 702, cellphones, etc., over the wireless network 812. Likewise, the mobiledevices 701 and 702 can establish peer-to-peer communications 820, e.g.,in a personal area network, by use of one or more communicationsubsystems, such as a Bluetooth™ communication device. Othercommunication protocols and topologies can also be implemented.

The mobile devices 701 and 702 can, for example, communicate with one ormore services 730, 830, 840, 850, and 860 and/or one or more contentpublishers 870 over the one or more wired and/or wireless networks 720.For example, a navigation service 830 can provide navigationinformation, e.g., map information, location information, routeinformation, and other information, to the mobile devices 701 and 702.In the example shown, a user of the mobile device 702 can invoke a mapfunctionality, e.g., by pressing a maps object on a graphical userinterface and can request and receive a map for a particular location(e.g., “100 NE Center Street, Peoria, Ill.”)

A mobile device 701 or 702 can include a component that enables themobile device 701 or 702 to receive broadcast from radio stations. Themobile device 701 or 702 can include a component for demodulating andextracting simulcast data stream (e.g., under the RDS protocol). Themobile device 701 or 702 can include a radio station database thatcontains contact information (e.g., phone number, SMS ID, email address,etc.). The mobile device 701 or 702 can have functions that present andopen a communication channel to a radio station whose broadcast contentthe mobile device 701 or 702 is playing.

A messaging service 840 can, for example, provide e-mail and/or othermessaging services. A media service 850 can, for example, provide accessto media files, such as song files, movie files, video clips, and othermedia data. An application repository can, for example, store arepository of application programs and recommend the applicationprograms for downloads. One or more other services 860 can also beutilized by the mobile devices 701 and 702.

A content metadata service 730 can, for example, provide services forparsing information snippets send to the service 730 from the mobiledevices 701 and 702, identifying components of content metadata from theinformation snippets, and recommending radio stations and content basedon the content metadata.

The mobile devices 701 and 702 can also access other data and contentover the one or more wired and/or wireless networks 720. For example,content publishers 870, such as news sites, RSS feeds, web sites, blogs,social networking sites, developer networks, radio stations, etc., canbe accessed by the mobile devices 701 and 702. Such access can beprovided by invocation of a web browsing function or application (e.g.,a browser) in response to a user touching the Web object 210.

The systems and methods disclosed herein may use data signals conveyedusing networks (e.g., local area network, wide area network, internet,etc.), fiber optic medium, carrier waves, wireless networks (e.g.,wireless local area networks, wireless metropolitan area networks,cellular networks, etc.), etc. for communication with one or more dataprocessing devices (e.g., mobile devices). The data signals can carryany or all of the data disclosed herein that is provided to or from adevice.

The methods and systems described herein may be implemented on manydifferent types of processing devices by program code comprising programinstructions that are executable by one or more processors. The softwareprogram instructions may include source code, object code, machine code,or any other stored data that is operable to cause a processing systemto perform methods described herein.

The systems and methods may be provided on many different types ofcomputer-readable media including computer storage mechanisms (e.g.,CD-ROM, diskette, RAM, flash memory, computer's hard drive, etc.) thatcontain instructions for use in execution by a processor to perform themethods' operations and implement the systems described herein.

The computer components, software modules, functions and data structuresdescribed herein may be connected directly or indirectly to each otherin order to allow the flow of data needed for their operations. It isalso noted that software instructions or a module can be implemented forexample as a subroutine unit of code, or as a software function unit ofcode, or as an object (as in an object-oriented paradigm), or as anapplet, or in a computer script language, or as another type of computercode or firmware. The software components and/or functionality may belocated on a single device or distributed across multiple devicesdepending upon the situation at hand.

This written description sets forth the best mode for implementing thesubject matter described and provides examples to describe the subjectmatter and to enable a person of ordinary skill in the art to make anduse the subject matter. This written description does not limit thesubject matter to the precise terms set forth. Thus, while the subjectmatter has been described in detail with reference to the examples setforth above, those of ordinary skill in the art may effect alterations,modifications and variations to the examples without departing from thescope of the subject matter.

1. A computer-implemented method, comprising: receiving, on a mobile device, a radio simulcast of content and a data stream, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata including information on the content; storing, on the mobile device, the information on the content in a data structure in association with a timestamp; and providing for display on the mobile device a user interface, the user interface operable for displaying a presentation of the timestamp and the information on the content in response to a user query.
 2. The method of claim 1, wherein obtaining the content metadata comprises: identifying from the information snippets at least one of: a program type of the content in the simulcast, a title of the content, a name of a performer of the content, a composer of the content, or an identifier identifying a radio station.
 3. The method of claim 1, comprising: opening, based on the content metadata, a communication channel connecting the mobile device and a content supplier.
 4. A computer-implemented method, comprising: receiving, on a mobile device, a radio simulcast comprising a data stream and broadcast content, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata comprising an identifier identifying a radio station from which the content is broadcast; providing for display, on a display of the mobile device, a user interface for accessing a communication channel connecting the mobile device to the radio station, wherein the user interface is operable to display first contact information retrieved from a radio station database, the first contact information corresponding to the radio station identified by the identifier, the radio station database being stored on the mobile device; and opening, by the mobile device, the communication channel to the radio station using the first contact information in response to a user request received from the user interface.
 5. The method of claim 4, comprising assembling the information snippets into the content metadata, wherein assembling the information snippets comprises: identifying one or more advertisers and second contact information associated with the advertisers from the information snippets; and storing the advertisers and second contact information on the advertisers on a storage device of the mobile device.
 6. The method of claim 5, wherein the user interface comprises a browsable display of the advertisers.
 7. The method of claim 5, wherein the user interface comprises a telephone interface for dialing a telephone number contained in the second contact information.
 8. The method of claim 5, wherein the user interface comprises a messaging interface for sending a message using a telephone number contained in the second contact information.
 9. A non-transitory computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising: receiving, on a mobile device, a radio simulcast of content and a data stream, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata including information on the content; storing, on the mobile device, the information on the content in a data structure in association with a timestamp; and providing for display on the mobile device a user interface, the user interface operable for displaying a presentation of the timestamp and the information on the content in response to a user query.
 10. The computer-readable medium of claim 9, wherein obtaining the content metadata comprises: identifying from the information snippets at least one of: a program type of the content in the simulcast, a title of the content, a name of a performer of the content, a composer of the content, or an identifier identifying a radio station.
 11. The computer-readable medium of claim 9, the operations further comprising: opening, based on the content metadata, a communication channel connecting the mobile device and a content supplier.
 12. A non-transitory computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising: receiving, on a mobile device, a radio simulcast comprising a data stream and broadcast content, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata comprising an identifier identifying a radio station from which the content is broadcast; providing for display, on a display of the mobile device, a user interface for accessing a communication channel connecting the mobile device to the radio station, wherein the user interface is operable to display first contact information retrieved from a radio station database, the first contact information corresponding to the radio station identified by the identifier, the radio station database being stored on the mobile device; and opening, by the mobile device, the communication channel to the radio station using the first contact information in response to a user request received from the user interface.
 13. The computer-readable medium of claim 12, the operations comprising assembling the information snippets into the content metadata, wherein assembling the information snippets into the content metadata comprises: identifying one or more advertisers and second contact information on the advertisers from the information snippets; and storing the advertisers and second contact information associated with the advertisers on a storage device of the mobile device.
 14. The computer-readable medium of claim 13, wherein the user interface comprises a browsable display of the advertisers.
 15. The computer-readable medium of claim 13, wherein the user interface further comprises a telephone interface for dialing a telephone number contained in the second contact information.
 16. The computer-readable medium of claim 13, wherein the user interface comprises a messaging interface for sending a message using a telephone number contained in the second contact information.
 17. A system, comprising: a processor; and a non-transitory computer-readable medium coupled to the processor and having instructions contained thereon, which, when executed by the processor, cause the processor to perform operations comprising: receiving, on a mobile device, a radio simulcast of content and a data stream, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata including information on the content; storing, on the mobile device, the information on the content in a data structure in association with a timestamp; and providing for display on the mobile device a user interface, the user interface operable for displaying a presentation of the timestamp and the information on the content in response to a user query.
 18. The system of claim 17, wherein obtaining the content metadata comprises: identifying from the information snippets at least one of: a program type of the content in the simulcast, a title of the content, a name of a performer of the content, a composer of the content, or an identifier identifying a radio station.
 19. The system of claim 17, the operations further comprising: opening, based on the content metadata, a communication channel connecting the mobile device and a content supplier.
 20. A system, comprising: a processor; and a non-transitory computer-readable medium coupled to the processor and having instructions contained thereon, which, when executed by the processor, cause the processor to perform operations comprising: receiving, on a mobile device, a radio simulcast comprising a data stream and broadcast content, the data stream comprising one or more information snippets; obtaining content metadata from the information snippets, the content metadata comprising an identifier identifying a radio station from which the content is broadcast; providing for display, on a display of the mobile device, a user interface for accessing a communication channel connecting the mobile device to the radio station, wherein the user interface is operable to display first contact information retrieved from a radio station database, the first contact information corresponding to the radio station identified by the identifier, the radio station database being stored on the mobile device; and opening, by the mobile device, the communication channel to the radio station using the first contact information in response to a user request received from the user interface.
 21. The system of claim 20, comprising assembling the information snippets into the content metadata, wherein assembling the information snippets comprises: identifying one or more advertisers and second contact information on the advertisers from the information snippets; and storing the advertisers and second contact information associated with the advertisers on a storage device of the mobile device.
 22. The system of claim 21, wherein the user interface comprises a browsable display of the advertisers.
 23. The system of claim 21, wherein the user interface comprises a telephone interface for dialing a telephone number contained in the second contact information.
 24. The system of claim 21, wherein the user interface comprises a messaging interface for sending a message using a telephone number contained in the second contact information.
 25. The method of claim 1, wherein the simulcast is a broadcast based on a radio data system (RDS) protocol or a radio broadcast data system (RBDS) protocol.
 26. The computer-readable medium of claim 9, wherein the simulcast is a broadcast based on a radio data system (RDS) protocol or a radio broadcast data system (RBDS) protocol.
 27. The system of claim 17, wherein the simulcast is a broadcast based on a radio data system (RDS) protocol or a radio broadcast data system (RBDS) protocol. 